The advent of Device Plug and Play (PnP) has revolutionized device integration within an operating system. Device PnP capability within an operating system makes it a great deal easier to setup, configure, and add peripherals to a PC. Universal Plug and Play (UPnP) extends device PnP capability to an entire network. Accordingly, a UPnP network enables discovery and control of devices within the UPnP network. The devices include networked devices and services, such as network-attached printers, Internet gateways, and consumer electronics equipment.
However, UPnP is more than just a simple extension of the Plug and Play peripheral model. UPnP is designed to support zero-configuration, “invisible” networking, and automatic discovery for a breadth of device categories from a wide range of vendors. Utilizing UPnP, a device can dynamically join a network, obtain an IP (Internet protocol) address, convey its capabilities, and learn about the presence and capabilities of other devices. These dynamic capabilities occur automatically, thereby truly enabling zero configuration networks. Consequently, devices within a UPnP network can communicate with each other directly to enable peer to peer networking.
The varieties of device types that can benefit from a UPnP enabled network are large and include intelligent appliances, wireless devices, and PCs of all form factors. In fact, the scope of UPnP is large enough to encompass many existing, as well as new and exciting scenarios. These new and exciting scenarios include home automation, printing and imaging, audio/video entertainment, kitchen appliances, automobile networks, and proximity networks in public venues. Moreover, UPnP uses standard TCP/IP (TransmissionControlProtocol/IP) and Internet protocols. Accordingly, UPnP device capabilities can be seamlessly fit into existing networks. Furthermore, using these standardized protocols allows UPnP to benefit from a wealth of experience and knowledge, and makes interoperability an inherent feature.
UPnP is a distributed, open network architecture, defined by the protocols used. As a result, UPnP is independent of any particular operating system, programming language, or physical medium (just like the Internet). In addition, UPnP does not specify the APIs (application programming interfaces) applications will use. As a result, operating system vendors are allowed to create the APIs that will meet their customer needs. Unfortunately an easy and quick solution for expediting the device development process does not exist.
Accordingly, UPnP device development requires a thorough understanding of UPnP, a UPnP development kit, such as Intel's UPnP SDK (software development kit), as well as XML (extensible mark-up language). In addition, the device developer is forced to repeatedly write similar code for each device implementation, with little variation. As a result, each new device requires fresh design and implementation work from scratch. Besides this, the developer has to write the code to parse XML, perform parameter conversion, handle callbacks, manage an event table, generate responses, map services, etc. Furthermore, testing time and resources are duplicated for each new device implementation. These problems become serious in a project that is time critical and requires quick deployment.
Therefore, there remains a need to overcome one or more of the limitations in the above-described existing.